package com.hy.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hy.medicine.CartItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 购物车项目Mapper接口
 */
@Mapper
public interface CartItemMapper extends BaseMapper<CartItem> {

    /**
     * 根据用户ID查询购物车列表
     * @param userId 用户ID
     * @return 购物车项目列表
     */
    @Select("SELECT * FROM cart_item WHERE user_id = #{userId}")
    List<CartItem> selectByUserId(Long userId);

    /**
     * 根据用户ID和药品ID查询购物车项
     * @param userId 用户ID
     * @param medicineId 药品ID
     * @return 购物车项
     */
    @Select("SELECT * FROM cart_item WHERE user_id = #{userId} AND medicine_id = #{medicineId} LIMIT 1")
    CartItem selectByUserIdAndMedicineId(@Param("userId") Long userId, @Param("medicineId") Long medicineId);

    /**
     * 更新购物车项目数量
     * @param id 购物车项ID
     * @param quantity 新数量
     * @return 影响的行数
     */
    @Update("UPDATE cart_item SET quantity = #{quantity} WHERE id = #{id}")
    int updateQuantity(@Param("id") Long id, @Param("quantity") Integer quantity);

    /**
     * 清空用户购物车
     * @param userId 用户ID
     * @return 影响的行数
     */
    int deleteByUserId(Long userId);

    /**
     * 获取用户购物车商品数量
     * @param userId 用户ID
     * @return 购物车商品数量
     */
    @Select("SELECT COUNT(1) FROM cart_item WHERE user_id = #{userId}")
    int countByUserId(Long userId);
}
